---@coding utf8
---@brief xlib基础环境设置

---@class ModuleInfo
---@field name string: lua模块名
---@field fname string: 模块文件名
---@field load_ts integer: 上次加载完成时间戳
---@field module table|any: 上次加载结果


---@brief 定制化的requirelike函数
--- 1.对运行目录的相对路径进行加载
---@param lua_module_name string
local function ximport(lua_module_name)
    local minfo = _xlibEnv.module2minfo[lua_module_name]
    if not minfo then
        minfo = {
            name = lua_module_name,
            fname = string.gsub(lua_module_name, "%.", "/") .. ".lua",
            load_ts = os.time(),
            module = nil
        }
        local chunk, err = loadfile(minfo.fname)
        if nil == chunk then
            print(err)
        else
            local ok, err_or_res = pcall(chunk)
            if not ok then
                print(err_or_res)
            else
                if type(err_or_res) ~= "table" then
                    --print(string.format("module=%s,hotupdate maybe faild", lua_module_name))
                    minfo["module"] = err_or_res
                else
                    for k, v in pairs(err_or_res) do
                        minfo["module"][k] = v
                    end
                end
            end
        end
    end
end


return ximport


